package com.example.design.singleton;

/**
 * @ClassName Singleton3
 * @Description 懒汉式(线程不安全----不添加锁机制)
 * 线程安全性： 单线程下没有问题，多线程下有可能会生成多个实例，因此线程不安全。
 * 问题出现在if (null == instance)这一步，多线程环境中可能会有多个线程同时拿到instance的值为null。
 * 是否懒加载： 懒加载
 * 性能： 性能比较好
 * @Author Administrator
 * @Date 2020/5/7 10:14
 * @Version 1.0
 */
public class Singleton3 {

    private static Singleton3 instance;

    private Singleton3(){}

    public static Singleton3 getInstance(){

        // 被动创建，在真正需要使用时才去创建
        if(instance == null){
            instance = new Singleton3();
        }
        return instance;
    }

    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public static void main(String[] args) {
        Singleton3 s1 = Singleton3.getInstance();
        Singleton3 s2 = Singleton3.getInstance();
        s1.setName("zhangsan3");
        s2.setName("lisi3");
        System.out.println(s1.getName());
        System.out.println(s2.getName());
        System.out.println(s1.getName().equals(s2.getName()));
    }

}
